package org.example.campusforum.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 系统操作日志实体类
 *
 * 对应数据库中的logs表，用于记录系统中的重要操作日志。
 * 支持操作审计和系统监控功能，记录用户的关键操作行为。
 * 便于管理员追踪系统使用情况和排查问题。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Logs implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 日志记录主键ID
     * 数据库自增长字段，唯一标识一条日志记录
     */
    private Long id;

    /**
     * 操作类型
     * 0: 增加操作 - 创建新的数据记录
     * 1: 删除操作 - 删除已有的数据记录
     * 2: 修改操作 - 更新已有的数据记录
     */
    private Integer operationType;

    /**
     * 操作模块
     * 标识操作涉及的系统模块：
     * "用户管理" - 用户相关操作
     * "类别管理" - 分类相关操作
     * "帖子管理" - 文章相关操作
     * "评论管理" - 评论相关操作
     */
    private String operationModule;

    /**
     * 操作内容描述
     * 详细描述具体的操作内容，如"创建用户"、"删除文章"等
     */
    private String operation;

    /**
     * 操作用户ID
     * 外键关联user表的id字段，标识执行操作的用户
     */
    private Long userId;

    /**
     * 操作时间
     * 记录操作发生的时间，数据库默认为当前时间
     */
    private LocalDateTime createTime;
}
